



function emptyList(list) {
    if (list==undefined || list==null || list.length == 0) {
        return true;
    }
    return false;
}

function emptyEntity(entity) {
    if (entity==undefined || entity==null || entity == "") {
        return true;
    }
    return false;
}

function fullScreen() {
    var el = document.documentElement;
    var rfs = el.requestFullScreen || el.webkitRequestFullScreen;
    if (typeof rfs != "undefined" && rfs) {
        rfs.call(el);
    } else if (typeof window.ActiveXObject != "undefined") {
        var wscript = new ActiveXObject("WScript.Shell");
        if (wscript != null) {
            wscript.SendKeys("{F11}");
        }
    } else if (el.msRequestFullscreen) {
        el.msRequestFullscreen();
    } else if (el.oRequestFullscreen) {
        el.oRequestFullscreen();
    } else {
        errTip('浏览器不支持全屏调用！');
    }
}

/**
 * 退出全屏
 */
function exitFullScreen() {
    var el = document;
    var cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.exitFullScreen;
    if (typeof cfs != "undefined" && cfs) {
        cfs.call(el);
    } else if (typeof window.ActiveXObject != "undefined") {
        var wscript = new ActiveXObject("WScript.Shell");
        if (wscript != null) {
            wscript.SendKeys("{F11}");
        }
    } else if (el.msExitFullscreen) {
        el.msExitFullscreen();
    } else if (el.oRequestFullscreen) {
        el.oCancelFullScreen();
    } else {
        errTip('浏览器不支持全屏调用！');
    }
}



function getOneLabel(d) {
    let html="";
    if (d.width == undefined){
        html = "<span style='display:inline-block;width: 180px;'>"+d.label+"："+d.content+"</span>";
    } else if(d.width==0){
        html = "<span style='margin-right: 20px;'>"+d.label+"："+d.content+"</span>";
    } else {
        html = "<span style='display:inline-block;width:"+d.width+"px;'>"+d.label+"："+d.content+"</span>";
    }

    if (d.newLine){
        if (d.paddingBottom == undefined){
            html += "<div style='clear: both;'/><div style='height: 20px;'></div>";
        } else {
            html += "<div style='clear: both;'/><div style='height: "+d.paddingBottom+"px;'></div>";
        }
    }
    return html;
}

function genPrintLine($div, list) {
    let html = "";
    html += "<div style='padding-bottom: 20px;'>";
    $.each(list, function (i,d) {
        html += getOneLabel(d);
    });
    html += "</div>";
    $div.append(html);
}
function genPrintDiv($div, id, title, barCode) {
    let child = "<div id='"+id+"' style='padding: 40px;page-break-after:always;'>\n" +
        "    <div style='width: 100%;height: 100px;line-height: 100px;position: relative;text-align: center;'>\n" +
        "        <span style='font-weight: bold;font-size: 20px;'>"+title+"</span>\n" +
        "        <div style='position: absolute;top: 0px;right: 0px;'>\n" +
        "            <canvas class='barcode' style='width: 200px;height: 100px;'/>\n" +
        "        </div>\n" +
        "    </div>\n" +
        "    <div class='before' style='padding-top: 20px;'></div>\n" +
        "    <div class='table'></div>\n" +
        "    <div class='end' style='padding-top: 20px;'></div>\n" +
        "</div>";
    $div.append(child);

    if (barCode != undefined) {
        $('#'+id+' .barcode').JsBarcode(barCode);
    }
}


function genPrintTable($div, heads, list) {
    let table = "";
    table += "<table>" +
        "  <thead>" +
        "  <tr>";

    $.each(heads, function (i,d) {
        table += "<th>"+d+"</th>";
    });

    table += "  </tr>" +
        "  </thead>" +
        "  <tbody>";

    $.each(list,function (index,data) {
        let child = "<tr>";
        for(let key in data){
            child += "<td>"+data[key]+"</td>";
        }
        child+="</tr>";
        table += child;
    });
    table += "  </tbody>" +
        "</table>";
    $div.append(table);
}

function genOpenTableContent(title,content) {
    content = content== null ? "" : content;
    return '<span class="openTable-item-title">'+title+'：</span>' + '<span class="openTable-exp-value">' + content + '</span>';
}

function genDate(date) {
    return date + " 00:00:00";
}

function genString(content) {
    return content = content== null ? "" : content;
}

function scrollToElement($ele) {
    $("html,body").animate({scrollTop: $ele.offset().top}, 500);
}

function getJsonLength(jsonData) {
    let length=0;
    for(let ever in jsonData) {
        length++;
    }
    return length;
}

function uniqueSn(arr) {
    let newArr = [];
    for (let i = 0; i < arr.length; i++) {
        let flag = true;
        for (let j=0;j<newArr.length;j++) {
            if (arr[i].sn == newArr[j].sn) {
                flag = false;
                break;
            }
        }
        if (flag) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

function uniqueBatch(arr) {
    let newArr = [];
    for (let i = 0; i < arr.length; i++) {
        let flag = true;
        for (let j=0;j<newArr.length;j++) {
            if (arr[i].batch == newArr[j].batch) {
                flag = false;
                break;
            }
        }
        if (flag) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}


function getFormJson($form) {
    let d = {};
    let t = $form.serializeArray();
    $.each(t, function () {
        // if (this.value!=undefined && this.value != null && this.value != '')
        {
            d[this.name] = this.value;
        }
    });
    return d;
}

function formRender() {
    layui.use(['form'], function () {
        let $ = layui.jquery,
            form = layui.form;
        form.render();
    });
}
function formSetVal(filter,data) {
    layui.use(['form'], function () {
        let $ = layui.jquery,
            form = layui.form;
        form.val(filter, data);
        form.render();
    });
}

/**
 * 是否是数字
 * @param val
 * @returns {boolean}
 * @constructor
 */
function isNumber(val) {
    if (parseFloat(val).toString() == "NaN") {
        return false;
    } else {
        return true;
    }
}

function isWindow64() {
    let agent = navigator.userAgent.toLowerCase();
    if (agent.indexOf("win64") >= 0 || agent.indexOf("wow64") >= 0) {
        return true;
    }
    else {
        return false;
    }
}

function isTrue(data) {
    if (data=="true") return true;
    if (data == true) return true;
    return false;
}
function isFalse(data) {
    if (data=="false") return false;
    if (data == false) return false;
}

function getFloat(num, point) {
    if (num == "") return "";
    return parseFloat(num).toFixed(parseInt(point));
}

function getLine(label, value){
    let br = "<br/>";
    return "<span style='font-size:13px;color:#aaaaaa;'>"+label + ":</span>" +
        "<span style='font-size:13px;color:#393D49;'>" + value +"</span>" + br;
}

function isInteger(n){
    return parseInt(n) == parseFloat(n)
}

/**
 * 加法运算，避免数据相加小数点后产生多位数和计算精度损失。
 *
 * @param num1加数1 | num2加数2
 */
function numAdd(num1, num2) {
    let baseNum, baseNum1, baseNum2;
    try {
        baseNum1 = num1.toString().split(".")[1].length;
    } catch (e) {
        baseNum1 = 0;
    }
    try {
        baseNum2 = num2.toString().split(".")[1].length;
    } catch (e) {
        baseNum2 = 0;
    }
    baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
    return (num1 * baseNum + num2 * baseNum) / baseNum;
};
/**
 * 减法运算，避免数据相减小数点后产生多位数和计算精度损失。
 *
 * @param num1被减数 | num2减数
 */
function numSub(num1, num2) {
    let baseNum, baseNum1, baseNum2;
    let precision;// 精度
    try {
        baseNum1 = num1.toString().split(".")[1].length;
    } catch (e) {
        baseNum1 = 0;
    }
    try {
        baseNum2 = num2.toString().split(".")[1].length;
    } catch (e) {
        baseNum2 = 0;
    }
    baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
    precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
    return ((num1 * baseNum - num2 * baseNum) / baseNum)
        .toFixed(precision);
};

function stringToBoolean(str)
{
    if(str == null || str == "") {
        return false;
    }
    switch(str.toLowerCase())
    {
        case "true": case "yes": case "1":  return true;
        case "false": case "no": case "0": case null: return false;
        default: return Boolean(str);
    }
}

function login(host,username,password,validateCode,process) {
    let pass = $.md5(password);
    let json = {
        user:username
        ,password:pass
        ,validateCode:validateCode
    };
    $.ajax({
        url: host+"login.action",
        type: 'POST',
        data: JSON.stringify(json),
        cache:false,
        dataType: "json",
        beforeSend: function () {
        },
        success: function (data) {
            if(data.error){
                process(true);
            } else {
                process(false);
            }
        },
        error: function () {
            process(false);
        }
    });
}

function logout(host,process) {
    $.ajax({
        url: host+"logout.action",
        type: 'POST',
        data: null,
        cache:false,
        dataType: "json",
        beforeSend: function () {
        },
        success: function (data) {
            if(data.code == 1){
                process(true);
            } else {
                process(false);
            }
        },
        error: function () {
            process(false);
        }
    });
}

function confirm(msg, fnYes) {
    layui.use('layer', function(){
        let layer = layui.layer;
        layer.alert(msg, {time: 20000, //20s后自动关闭
            btn: ['确定', '取消'],
            yes: fnYes,
        });
    });
}

function confirm2(title, msg, fnYes,fnCancel) {
    layui.use('layer', function(){
        let layer = layui.layer;
        layer.confirm(msg, {icon: 3, title:title}, function (index) {
            fnYes();
            closeDialog(index)
        }, function (index) {
            closeDialog(index)
            fnCancel();
        });
    });
}

function errTip(msg) {
    layui.use('layer', function(){
        let layer = layui.layer;
        layer.msg(msg, {icon: 2, shade: 0, scrollbar: false, time: 1500, shadeClose: true})
    });
}

function tip(msg) {
    layui.use('layer', function(){
        let layer = layui.layer;
        layer.msg(msg);
    });
}

function tips(msg, select) {
    layui.use('layer', function(){
        let layer = layui.layer;
        layer.tips(msg,select);
    });
}

function tipLoad(info) {
    layui.use('layer', function(){
        if (info != undefined) {
            $("#loadTip").html(info);
        }
        loadIndex = openLoadingDialog($('#loadingDialog'));
    });
    return loadIndex;
}



function closeLoading() {
    layui.use('layer', function(){
        let layer = layui.layer;
        layer.close(loadIndex);
    });
}

function closeDialog(index) {
    layui.use('layer', function(){
        let layer = layui.layer;

        layer.close(index);
    });
}

function closeAll() {
    layui.use('layer', function(){
        let layer = layui.layer;

        layer.closeAll();
    });
}


//GMT转普通格式
function GMTToStr(time){
    let date = new Date(time)
    let year = date.getFullYear();
    let month = preFillZero(date.getMonth() + 1, 2);
    let day = preFillZero(date.getDate(), 2);
    let hour = preFillZero(date.getHours(), 2);
    let minuter = preFillZero(date.getMinutes(), 2);
    let seconds = preFillZero(date.getSeconds(), 2);

    let Str= year + month + day;
    return Str
}



function preFillZero(num, length) {
    return (Array(length).join("0") + num).slice(-length);
}


function getYYYYMMDDHHMMSS(){
    let date = new Date();
    let year = date.getFullYear();
    let month = preFillZero(date.getMonth() + 1, 2);
    let day = preFillZero(date.getDate(), 2);
    let hour = preFillZero(date.getHours(), 2);
    let minuter = preFillZero(date.getMinutes(), 2);
    let seconds = preFillZero(date.getSeconds(), 2);

    let Str= year + month + day + hour + minuter + seconds;
    return Str
}

function getTime(){
    let date = new Date();
    let year = date.getFullYear();
    let month = preFillZero(date.getMonth() + 1, 2);
    let day = preFillZero(date.getDate(), 2);
    let hour = preFillZero(date.getHours(), 2);
    let minuter = preFillZero(date.getMinutes(), 2);
    let seconds = preFillZero(date.getSeconds(), 2);

    let Str= year+"-" + month+"-" + day + " " + hour+":" + minuter+":" + seconds;
    return Str
}

function getDate(){
    let date = new Date();
    let year = date.getFullYear();
    let month = preFillZero(date.getMonth() + 1, 2);
    let day = preFillZero(date.getDate(), 2);

    let Str= year+"-" + month+"-" + day;
    return Str
}

function getYYYYMMDD(){
    let date = new Date();
    let year = date.getFullYear();
    let month = preFillZero(date.getMonth() + 1, 2);
    let day = preFillZero(date.getDate(), 2);
    let Str= year + month + day;
    return Str;
}

function getDateFromLayUiDate(date) {
    let year = date.year;
    let month = preFillZero(date.month, 2);
    let day = preFillZero(date.date, 2);
    let Str= year+"-" + month+"-" + day;
    return Str;
}


//GMT转普通格式
function GMTToDate(time){

    if (time == null || time=="" || time==undefined) {
        return "";
    }

    if (isDateTime(time)){
        return time.substring(0,10);
    }

    let date = new Date(time);
    let Str=date.getFullYear() + '-' +
        ((date.getMonth() + 1) < 10 ? "0"+(date.getMonth() + 1) : (date.getMonth() + 1)) + '-' +
        ((date.getDate()) < 10 ? "0"+(date.getDate()) : (date.getDate())) + '';
    return Str;
}

function GMTToTime(time){
    if (time == null || time=="") {
        return "";
    }

    if (isDateTime(time)){
        return time;
    }

    let date = new Date(time);
    let year = date.getFullYear();
    let month = preFillZero(date.getMonth() + 1, 2);
    let day = preFillZero(date.getDate(), 2);
    let hour = preFillZero(date.getHours(), 2);
    let minuter = preFillZero(date.getMinutes(), 2);
    let seconds = preFillZero(date.getSeconds(), 2);

    let Str= year+"-" + month+"-" + day + " " + hour+":" + minuter+":" + seconds;
    return Str;
}

function isDate(str){
    let reg=/^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;
    return reg.test(str);
}

function isTime(str){
    let reg=/^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/;
    return reg.test(str);
}

function isDateTime(str){
    let reg=/^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/;
    return reg.test(str);
}

//检查Email邮箱
function isEmail(str){
    let reg=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;
    return reg.test(str);
}

//用户名为6～18个数字或字母
function isUser(str){
    let reg =  /^[0-9a-zA-Z]{6,18}$/

    if (str.match(reg) == null) {
        return false;
    }
    else {
        return true;
    }
}

//是否是数字或字母
function isNumberOrAlpha(str){
    var Regx = /^[A-Za-z0-9]*$/;
    if (Regx.test(str)) {
        return true;
    }
    else {
        return false;
    }
}


//6-16位数字和字母的组合
function isPassword(str){
    let reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$/;
    return reg.test(str);
}


(function($){
    let rotateLeft = function(lValue, iShiftBits) {
        return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
    }
    let addUnsigned = function(lX, lY) {
        let lX4, lY4, lX8, lY8, lResult;
        lX8 = (lX & 0x80000000);
        lY8 = (lY & 0x80000000);
        lX4 = (lX & 0x40000000);
        lY4 = (lY & 0x40000000);
        lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
        if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
        if (lX4 | lY4) {
            if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
            else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
        } else {
            return (lResult ^ lX8 ^ lY8);
        }
    }
    let F = function(x, y, z) {
        return (x & y) | ((~ x) & z);
    }
    let G = function(x, y, z) {
        return (x & z) | (y & (~ z));
    }
    let H = function(x, y, z) {
        return (x ^ y ^ z);
    }
    let I = function(x, y, z) {
        return (y ^ (x | (~ z)));
    }
    let FF = function(a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
    let GG = function(a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
    let HH = function(a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
    let II = function(a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
    let convertToWordArray = function(string) {
        let lWordCount;
        let lMessageLength = string.length;
        let lNumberOfWordsTempOne = lMessageLength + 8;
        let lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;
        let lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;
        let lWordArray = Array(lNumberOfWords - 1);
        let lBytePosition = 0;
        let lByteCount = 0;
        while (lByteCount < lMessageLength) {
            lWordCount = (lByteCount - (lByteCount % 4)) / 4;
            lBytePosition = (lByteCount % 4) * 8;
            lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
            lByteCount++;
        }
        lWordCount = (lByteCount - (lByteCount % 4)) / 4;
        lBytePosition = (lByteCount % 4) * 8;
        lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
        lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
        lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
        return lWordArray;
    };
    let wordToHex = function(lValue) {
        let WordToHexValue = "", WordToHexValueTemp = "", lByte, lCount;
        for (lCount = 0; lCount <= 3; lCount++) {
            lByte = (lValue >>> (lCount * 8)) & 255;
            WordToHexValueTemp = "0" + lByte.toString(16);
            WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);
        }
        return WordToHexValue;
    };
    let uTF8Encode = function(string) {
        string = string.replace(/\x0d\x0a/g, "\x0a");
        let output = "";
        for (let n = 0; n < string.length; n++) {
            let c = string.charCodeAt(n);
            if (c < 128) {
                output += String.fromCharCode(c);
            } else if ((c > 127) && (c < 2048)) {
                output += String.fromCharCode((c >> 6) | 192);
                output += String.fromCharCode((c & 63) | 128);
            } else {
                output += String.fromCharCode((c >> 12) | 224);
                output += String.fromCharCode(((c >> 6) & 63) | 128);
                output += String.fromCharCode((c & 63) | 128);
            }
        }
        return output;
    };
    $.extend({
        md5: function(string) {
            let x = Array();
            let k, AA, BB, CC, DD, a, b, c, d;
            let S11=7, S12=12, S13=17, S14=22;
            let S21=5, S22=9 , S23=14, S24=20;
            let S31=4, S32=11, S33=16, S34=23;
            let S41=6, S42=10, S43=15, S44=21;
            string = uTF8Encode(string);
            x = convertToWordArray(string);
            a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
            for (k = 0; k < x.length; k += 16) {
                AA = a; BB = b; CC = c; DD = d;
                a = FF(a, b, c, d, x[k+0],  S11, 0xD76AA478);
                d = FF(d, a, b, c, x[k+1],  S12, 0xE8C7B756);
                c = FF(c, d, a, b, x[k+2],  S13, 0x242070DB);
                b = FF(b, c, d, a, x[k+3],  S14, 0xC1BDCEEE);
                a = FF(a, b, c, d, x[k+4],  S11, 0xF57C0FAF);
                d = FF(d, a, b, c, x[k+5],  S12, 0x4787C62A);
                c = FF(c, d, a, b, x[k+6],  S13, 0xA8304613);
                b = FF(b, c, d, a, x[k+7],  S14, 0xFD469501);
                a = FF(a, b, c, d, x[k+8],  S11, 0x698098D8);
                d = FF(d, a, b, c, x[k+9],  S12, 0x8B44F7AF);
                c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1);
                b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE);
                a = FF(a, b, c, d, x[k+12], S11, 0x6B901122);
                d = FF(d, a, b, c, x[k+13], S12, 0xFD987193);
                c = FF(c, d, a, b, x[k+14], S13, 0xA679438E);
                b = FF(b, c, d, a, x[k+15], S14, 0x49B40821);
                a = GG(a, b, c, d, x[k+1],  S21, 0xF61E2562);
                d = GG(d, a, b, c, x[k+6],  S22, 0xC040B340);
                c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51);
                b = GG(b, c, d, a, x[k+0],  S24, 0xE9B6C7AA);
                a = GG(a, b, c, d, x[k+5],  S21, 0xD62F105D);
                d = GG(d, a, b, c, x[k+10], S22, 0x2441453);
                c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681);
                b = GG(b, c, d, a, x[k+4],  S24, 0xE7D3FBC8);
                a = GG(a, b, c, d, x[k+9],  S21, 0x21E1CDE6);
                d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6);
                c = GG(c, d, a, b, x[k+3],  S23, 0xF4D50D87);
                b = GG(b, c, d, a, x[k+8],  S24, 0x455A14ED);
                a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905);
                d = GG(d, a, b, c, x[k+2],  S22, 0xFCEFA3F8);
                c = GG(c, d, a, b, x[k+7],  S23, 0x676F02D9);
                b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A);
                a = HH(a, b, c, d, x[k+5],  S31, 0xFFFA3942);
                d = HH(d, a, b, c, x[k+8],  S32, 0x8771F681);
                c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122);
                b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C);
                a = HH(a, b, c, d, x[k+1],  S31, 0xA4BEEA44);
                d = HH(d, a, b, c, x[k+4],  S32, 0x4BDECFA9);
                c = HH(c, d, a, b, x[k+7],  S33, 0xF6BB4B60);
                b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70);
                a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6);
                d = HH(d, a, b, c, x[k+0],  S32, 0xEAA127FA);
                c = HH(c, d, a, b, x[k+3],  S33, 0xD4EF3085);
                b = HH(b, c, d, a, x[k+6],  S34, 0x4881D05);
                a = HH(a, b, c, d, x[k+9],  S31, 0xD9D4D039);
                d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5);
                c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8);
                b = HH(b, c, d, a, x[k+2],  S34, 0xC4AC5665);
                a = II(a, b, c, d, x[k+0],  S41, 0xF4292244);
                d = II(d, a, b, c, x[k+7],  S42, 0x432AFF97);
                c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7);
                b = II(b, c, d, a, x[k+5],  S44, 0xFC93A039);
                a = II(a, b, c, d, x[k+12], S41, 0x655B59C3);
                d = II(d, a, b, c, x[k+3],  S42, 0x8F0CCC92);
                c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D);
                b = II(b, c, d, a, x[k+1],  S44, 0x85845DD1);
                a = II(a, b, c, d, x[k+8],  S41, 0x6FA87E4F);
                d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0);
                c = II(c, d, a, b, x[k+6],  S43, 0xA3014314);
                b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1);
                a = II(a, b, c, d, x[k+4],  S41, 0xF7537E82);
                d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235);
                c = II(c, d, a, b, x[k+2],  S43, 0x2AD7D2BB);
                b = II(b, c, d, a, x[k+9],  S44, 0xEB86D391);
                a = addUnsigned(a, AA);
                b = addUnsigned(b, BB);
                c = addUnsigned(c, CC);
                d = addUnsigned(d, DD);
            }
            let tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
            return tempValue.toLowerCase();
        }
    });
})(jQuery);

